//#include<iostream>
//#include<string>
//using namespace std;
//
//int main() {
//	int n;
//	cin >> n;
//	getchar();
//	int arr[10001] = { 0 };
//	int min = 100000;
//	int max = 0;
//	for (int i = 0; i < n; i++) {
//		string s;
//		getline(cin, s);
//		int j = 0;
//		while(j<s.size()){
//			int start = j;
//
//			while (j < s.size() && s[j] != ' ') {
//				j++;
//			}
//
//
//
//			string s2 = s.substr(start, j);
//			int sum = stoi(s2);
//			if (sum > max)max = sum;
//			if (sum < min)min = sum;
//			arr[sum]++;
//			while (j < s.size() && s[j] == ' ') {
//				j++;
//			}
//		}
//	}
//	for (int i = min; i <= max; i++) {
//		if (arr[i]==0)
//			cout << i<<" ";
//		if (arr[i] == 2)
//			cout << i;
//	}
//	return 0;
//}

void gy(long long& a, long long& b) {
	long long r = a % b;
	while (r != 0)
	{
		a = b;
		b = r;
		r = a % b;
	}
}
#include<iostream>
#include<string>
using namespace std;

int main() {
	long long n = 3;
	cin >> n;
	long long arr[4];
	for (long long i = 1; i <= n; i++) {
		cin >> arr[i];
	}
	long long k = 0;
	while (arr[1] != 1 || arr[2] != 1) {
		k++;
		long long a = arr[1];
		long long b = arr[2];
		gy(a, b);
		if (arr[1] != 1 )
			arr[1] = b;
		else
			arr[2] = b;
	}
	k += n - 2;
	cout << k;
	return 0;
}